package com.example.designmode.responsibility

import org.junit.Test


/**
 * 请假控制系统：
 * 请假一天以下只需要小组长同意即可；
 * 请假一天到3天还需要部门经理同意；
 * 请假3到7天需要总经理同意才行
 *
 *
 * @author zhouronghua
 * @time 2022/3/9 3:16 下午
 */
class Client {

    @Test
    fun testChainOfResponsibility() {
        var request = LeaveRequest()
        request.name = "黎明"
        request.days = 4
        request.reason = "身体不适需要休息"

        // 创建责任链
        var leader = GroupLeader()
        var manager = Manager()
        // 小组长的下一个责任链为部门经理
        leader.nextHandler = manager
        // 创建总经理
        var groupManager = GroupManager()
        manager.nextHandler = groupManager

        // 提交请求给小组长
        leader.submit(request)
    }
}